DataSet, DataTable, DataColumn : 네이버 블로그 |
您所在的位置:网站首页 › 简述dataset datatable datacolumn › DataSet, DataTable, DataColumn : 네이버 블로그 |
DB상의 실제 테이블의 스키마가 DataSet에 DataTable에 그대로 옮겨온 상태이기 때문에 정수형으로 정해진 컬럼에 문자열을 대입할 수는 없을듯 합니다.
웹폼에서 GridView같은 경우는 이벤트하나로 해결했었는데.. 윈폼에 있는 DataGridView컨트롤은 좀 다르네요..
우선 일감에 떠오른 방법은 모든 스키마가 동일하고 원하는 컬럼의 type만 원하는 type으로 변경된 임시테이블을 만들고 DB에서 업어온 DataSet의 테이블의 값들을 차례로 옮기다가 원하는 컬럼을 복사할때 조건을 검사해서 일치하는 값으로 대입해주는 방법이었는데요.. 좀 무식해보이긴 하네요; 메모리부담도 좀 커질듯 하고..
// DB에서 가져왔다고 가정하고 만든 DataTable입니다. DataTable table = new DataTable("temp"); DataColumn col1 = new DataColumn("item", typeof(string));// string타입의 'item'컬럼 DataColumn col2 = new DataColumn("qty", typeof(int));// int타입의 'qty'컬럼 table.Columns.AddRange(new DataColumn[] { col1, col2 });
DataRow row1 = table.NewRow(); row1["item"] = "모자"; row1["qty"] = 8; DataRow row2 = table.NewRow(); row2["item"] = "바지"; row2["qty"] = 9; DataRow row3 = table.NewRow(); row3["item"] = "코트"; row3["qty"] = 4; DataRow row4 = table.NewRow(); row4["item"] = "양말"; row4["qty"] = 10;
table.Rows.Add(row1); table.Rows.Add(row2); table.Rows.Add(row3); table.Rows.Add(row4); // 여기까지 DB테이블 완성
// DB의 Table과 동일한 스키마로 채울 임시테이블 DataTable tempTable = new DataTable(); foreach (DataColumn col in table.Columns) {// 원본테이블의 Column의 컬렉션으로 반복문을 돌면서 // 동일 스키마 생성 DataColumn newCol = new DataColumn(col.ColumnName, col.DataType); tempTable.Columns.Add(newCol); }
tempTable.Columns["qty"].DataType = typeof(string);// 원하는 컬럼의 타입만 변경해줌
foreach (DataRow row in table.Rows) { // 원본 테이블의 Row컬렉션으로 반복문 돌면서 DataRow newRow = tempTable.NewRow();
newRow["item"] = row["item"];// 다른 값들은 그대로 대입
switch (Convert.ToInt32(row["qty"])) // 원하는 컬럼의 경우 {// 경우에 따라 원하는값 대입 case 1: newRow["qty"] = "aaa"; break; case 2: newRow["qty"] = "bbb"; break; case 3: newRow["qty"] = "ccc"; break; case 4: newRow["qty"] = "ddd"; break; case 5: newRow["qty"] = "eee"; break; case 6: newRow["qty"] = "fff"; break; case 7: newRow["qty"] = "ggg"; break; case 8: newRow["qty"] = "hhh"; break; case 9: newRow["qty"] = "iii"; break; default: newRow["qty"] = "jjj"; break; }
tempTable.Rows.Add(newRow); }
// 데이터를 묶어줄 DataGridView컨트롤 DataGridView viewer = new DataGridView() { Parent = this.zoneContent, Size = new Size(300, this.zoneContent.Height) }; //viewer.DataSource = table; // 원본Table로 바인딩하지 말고 viewer.DataSource = tempTable;// 원하는 스키마로 가공한 임시테이블로 바인딩
-------------------------------------------------------------------------------------- foreach (DataTable table in DS.Tables["a테이블명"]) { foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { String equal_checker = Console.WriteLine(row[column]); } } }/////////////////////////////////////////////////////////////////////////////////////////////////// 진행단계 삭제된 거 넣어주기 if (HoiwonGubun == "11") { if (dtExChange != null && dtExChange.Rows.Count > 0) { string strTemp = dtResult.Rows[0]["EXCHANGE_CODE"].ToString(); if (strTemp != "") { DataRow[] dr = dtExChange.Select("CODE_NO = '" + strTemp + "'"); if (dr.Length == 0) { DataRow newRow = dtExChange.NewRow(); int i = 0; string[] strDataRow = { strTemp, strTemp, "99999" }; foreach (DataColumn cln in dtExChange.Columns) { newRow[cln.ColumnName] = strDataRow[i++]; } dtExChange.Rows.InsertAt(newRow, dtExChange.Rows.Count); } } } }
======================================================================================================= ... protected DataTable dtMainData; protected TimeSpan tsDiff; private DataSet dsMainData; private DataSet dsMainData1; private DataTable dsMainData1t; if (XmlSearchData["txtId"].InnerText != "") { DateTime SDate = DateTime.Parse(XmlSearchData["ddlSYear"].InnerText + "-" + XmlSearchData["ddlSMonth"].InnerText + "-" + XmlSearchData["txtSDay"].InnerText); DateTime EDate = DateTime.Parse(XmlSearchData["ddlEYear"].InnerText + "-" + XmlSearchData["ddlEMonth"].InnerText + "-" + XmlSearchData["txtEDay"].InnerText); TimeSpan Date = EDate - SDate; int DateCnt = Date.Days + 1; DateTime NowDate = DateTime.Today; int iReportDayWeek1 = Convert.ToInt16(NowDate.DayOfWeek); //현재 요일 int iReportDayWeek2 = Convert.ToInt16(DayOfWeek.Saturday); //토요일 int iReportDayWeek3 = Convert.ToInt16(DayOfWeek.Sunday); //일요일 DateTime SatDate = NowDate.AddDays(iReportDayWeek2 - iReportDayWeek1); DateTime SunDate = NowDate.AddDays(iReportDayWeek3 - iReportDayWeek1); int cnt = dsMainData.Tables[0].Rows.Count;dsMainData1t = tt(); dsMainData1 = new DataSet(); for (int j = 0; j |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |